package dao

import (
	"time"
)

// 这是 GoodsProduct 的全局公开dao对象，被service层调用!
var GoodsProductDao = goodsProductDao{}

// 商品货品表
// 这是 goods_product表 的实体类,这个实体类中的字段可以减少，但是不能在其基础上增加!
type GoodsProduct struct {
	Id             int32     `json:"id" form:"id" v:"id" db:"id"`
	GoodsId        int32     `json:"goods_id" form:"goods_id" v:"goods_id" db:"goods_id"`                         // 商品表的商品ID
	Specifications string    `json:"specifications" form:"specifications" v:"specifications" db:"specifications"` // 商品规格值列表，采用JSON数组格式
	Price          float64   `json:"price" form:"price" v:"price" db:"price"`                                     // 商品货品价格
	Number         int32     `json:"number" form:"number" v:"number" db:"number"`                                 // 商品货品数量
	Url            string    `json:"url" form:"url" v:"url" db:"url"`                                             // 商品货品图片
	AddTime        time.Time `json:"add_time" form:"add_time" v:"add_time" db:"add_time"`                         // 创建时间
	UpdateTime     time.Time `json:"update_time" form:"update_time" v:"update_time" db:"update_time"`             // 更新时间
	Deleted        int8      `json:"deleted" form:"deleted" v:"deleted" db:"deleted" gm:"deleted"`                // 逻辑删除

}

// 注意:这是 GoodsProduct 的私有dao对象，只能在dao层内使用!
type goodsProductDao struct {
	InsertTemplate func(arg GoodsProduct) (int64, error)              //插入一条记录
	UpdateTemplate func(arg GoodsProduct) (int64, error)              //更新一条记录
	DeleteTemplate func(id int64) (int64, error)                      `args:"id"` //根据传入的主键删除一条记录
	SelectTemplate func(id int64) (GoodsProduct, error)               `args:"id"` //根据传入的主键获取一条记录
	List           func(arg GoodsProductList) ([]GoodsProduct, error) //模糊分页查询
}

/*
// 这是 goods_product 表的Postman测试参数
// 该结构体中的字段就是: 前后端交互的json字段!
type GoodsProductPostman struct {
id
goods_id
specifications
price
number
url
add_time
update_time
deleted

}*/

// 这是 goods_product 表的批量请求参数
type GoodsProductReq struct {
	List []GoodsProduct `json:"list" form:"list"`
}

// 这是 goodsProductDao.List()方法的请求参数
type GoodsProductList struct {
	Page
}
